在前面介紹了 session、redirect、css 等相關的攻擊手法後,讓我來簡單介紹一下 Insecure Design 吧 ~
引用自 OWASP 對於 Insecure Design 的介紹:
Insecure design is a broad category representing different weaknesses, expressed as “missing or ineffective control design.”
由上述引言可知:
Insecure Design 是一種 "缺乏或無效的控制設計"。
而 Insecure Design 無法透過完美的實現來修復,因為根據定義,所需的安全控制從未被創建來防禦特定的攻擊。導致不安全設計的因素之一是缺乏正在開發的軟體或系統固有的業務風險分析,因此無法確定需要什麼程度的安全設計。
收集並與業務部門協商應用程式的業務需求,包括有關所有資料資產的機密性、完整性、可用性和真實性的保護要求以及預期的業務邏輯。
這邊介紹一個比較 High level 的評斷標準 - CIA Triad (資安鐵三角)
C - Confidentiality 機密性
若要看資料需要經過別人"授權" ( = 沒有經過授權不會看到資料 )
所以要注意 "不能在未經授權的情況下":
I - Integrity 完整性
為了保持資料完整性,資訊不可以被竄改 ( = 資料需要全部出自於原作者,不可以被更改 )
需要注意:
A - Availability 可用性
確保在取得授權的情況下,可以及時讀取或使用資料
需要注意:
安全設計是一種不斷評估威脅並確保程式碼經過穩健設計和測試以防止已知攻擊方法的文化和方法。
透過綜合考量以下幾點來進行安全設計:
我們在第一點提過 "威脅建模",而什麼是 "威脅建模" 呢?
威脅建模的核心概念是: "站在攻擊者的位置思考",藉此評估應用程式的資安風險和威脅,並且針對風險和威脅制定一個應對措施。
STRIDE 分為以下幾種:
以下對於 STRIDE 的對應例子做一些舉例:
Spoofing 偽造
Example:
冒充其他用戶的帳號、網址偽裝成某個網站
Tampering 篡改
Example:
修改資料或 code - 修改訂單資訊、篡改封包、篡改程式所需要的動態連結函式庫(Dynamic-Link Library),並植入惡意程式碼
Repudiation 抵賴否認:
Example:
不承認修改行為、否認發送過某個 Email、拒絕承認瀏覽某個網站。
Information disclosure 資訊洩漏:
Example:
使用者資訊被洩漏,無論惡意或無意,將重要的客戶資料流出,讓人未經授權使用。
Denial of Service 阻斷服務:
Example:
DDoS 導致網站不可用,系統無法運作,或是網站無法服務。
Elevation of Privilege 提升許可權、未經授權獲取:
Example:
將普通用戶提升到管理員,讓遠端一般使用者透過非正常管道提升權限,以至於能夠執行系統管理員才能執行的指令。
今天透過簡單介紹 Insecure Design 來帶出一些簡單的資訊安全評估指標,希望大家能透過這些指標來檢視一些可能的使用者故事,進而找出自己的資安漏洞 XD
不得不說資安真的是一個博大精深的領域,再度燃起我對於資訊的熱情XD 中秋節來繼續好好研究!!!! 一邊吃烤肉(誤
有了這些科普知識後,下次終於可以好好來研究 Auth 相關的安全設計啦!! (普天同慶